package com.iee.patterns.example.state.login;

public class AppContext {

    public static final UserState SATE_LOGIN = new LoginState();
    public static final UserState SATE_UNLOGIN = new UnLoginState();
    // 设置默认状态
    private UserState currentState = SATE_UNLOGIN;

    {
        SATE_LOGIN.setAppContext(this); // 初始化状态
        SATE_UNLOGIN.setAppContext(this);
    }

    // 提供用户切换状态的方法
    public void setState(UserState state) {
        this.currentState = state;
    }

    // 提供用户获取当前状态的方法
    public UserState getState() {
        return this.currentState;
    }

    // 用户操作入口；状态的流转是系统内部决定的，而不是用户可以操作的！
    public void favourate() {
        this.currentState.favourite();

    }

    public void comment(String comment) {
        this.currentState.comment(comment);
    }
}
